/**
 * Created by Leon on 2016/12/13.
 */
import tips from '../../widget/form_valid_tips.vue';
export default {
  data(){
    return {
      tipsShow: false,        // 表单验证提示信息是否显示
      tipsMessage: ''         // 表单验证的提示信息
    }
  },
  components: {
    tips
  },
  methods: {
    vaildMess(obj){
      /*obj是必须变量，有三个属性*/
      var obj2 = obj || {
          target: null,   // 执行对象
          str: '',        // 提示信息
          res: ''         // 正则表达式
        };
      var _this = this;
      if (!obj2.target.value.match(obj.res)) {
        _this.tipsMessage = obj2.str;   // 设置提示信息
        _this.tipsShow = true;          // 现实提示弹窗
        window.setTimeout(function () {
          /*两秒后，弹窗消失*/
          _this.tipsShow = false;
          _this.tipsMessage = '';
        }, 2000);
        return false;
      } else {
        return true;
      }
    },
    vaildForm(obj){
      var arr;
      var _this = this;
      var flag = true;   // 辅助变量，用来标志验证结果，值为false时不能提交表单
      obj.length ? arr = Array.prototype.slice.call(obj) : arr = [].concat(obj); // 把传入的对象转换成数组
      for (var i = 0; i < arr.length; i++) {
        var dataset = arr[i].dataset;
        if (dataset) {
          var type = arr[i].dataset.type;
        }
        // debugger;
        if (arr[i].required && !arr[i].value.trim()) {
          if (arr[i].getAttribute("tips")) {
            var placeholder = arr[i].getAttribute("tips");
          }
          _this.tipsMessage = placeholder + '不能为空';   // 设置提示信息
          _this.tipsShow = true;          // 现实提示弹窗
          window.setTimeout(function () {
            /*两秒后，弹窗消失*/
            _this.tipsShow = false;
            _this.tipsMessage = '';
          }, 2000);
          flag = false;
          return false;
        } else {
          flag = true;
        }
        switch (type) {
          case 'phone':
            var res = /^1[34578]\d{9}$/;
            flag = _this.vaildMess({
              target: arr[i],
              str: '手机号格式不正确',
              res: res,
              flag: flag
            });
            break;
          case 'email':
            var res = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
            flag = _this.vaildMess({
              target: arr[i],
              str: '邮箱格式不正确',
              res: res,
              flag: flag
            });
            break;
        }
        if (!flag) {
          break;
        }
      }
      return flag;
    },
    vaildxIpt(obj){                  //用于xInput 的验证
      var arr;
      var _this = this;
      var flag = true;   // 辅助变量，用来标志验证结果，值为false时不能提交表单
      obj.length ? arr = Array.prototype.slice.call(obj) : arr = [].concat(obj); // 把传入的对象转换成数组
      for (var i = 0; i < arr.length; i++) {
         var dataset = arr[i].dataset;
        if (dataset) {
          var type = arr[i].dataset.type;
        }
        if (arr[i].getAttribute("isrequired") == "isrequired" && !arr[i].getElementsByTagName('input')[0].value.trim()) {
          if (arr[i].getAttribute("tips")) {
            var placeholder = arr[i].getAttribute("tips");
          }
          _this.tipsMessage = placeholder + '不能为空';   // 设置提示信息
          _this.tipsShow = true;          // 现实提示弹窗
          window.setTimeout(function () {
            /*两秒后，弹窗消失*/
            _this.tipsShow = false;
            _this.tipsMessage = '';
          }, 2000);
          flag = false;
          return false;
        } else {
          flag = true;
        }
        switch (type) {
          case 'phone':
            var res = /^1[34578]\d{9}$/;
            flag = _this.vaildMess({
              target: arr[i],
              str: '手机号格式不正确',
              res: res,
              flag: flag
            });
            break;
          case 'email':
            var res = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
            flag = _this.vaildMess({
              target: arr[i],
              str: '邮箱格式不正确',
              res: res,
              flag: flag
            });
            break;
        }
       
        if (!flag) {
          break;
        }
      }
      return flag;
    }
  }
}
